import request from '@/utils/request.js'
export function queryCategory(data) {
    return request({
        url: '/category/query',
        method: 'get',
        params: data
    })
}
export function addCategory(data) {
    return request({
        url: '/category/add',
        method: 'post',
        data:data
    })
}
export function delCategory(id) {
    return request({
        url: '/category/'+id,
        method: 'delete'
    })
}
export function editCategory(data) {
    return request({
        url: '/category/edit',
        method: 'put',
        data:data
    })
}
export function selCategory(data) {
    return request({
        url: '/category/'+data,
        method: 'get',
    })
}

export function queryTreeCategory(params) { 
    return new Promise((resolve,reject) => {
        request({
            url: '/category/query',
            method: 'get',
            params: params 
        }).then(response=>{
            console.log(params)
            let data = response.data.list
            var tree = [], temp = {}
            data.forEach((item) =>{
                temp[item['id']] = item  // 以id作为索引存储元素，可以无需遍历直接定位元素
            })
            data.forEach((item) =>{
                let currentElement = item
                let tempCurrentElementParent = temp[currentElement['pid']]  // 临时变量里面的当前元素的父元素
                if(tempCurrentElementParent){
                    if(!tempCurrentElementParent['children']){         // 如果父元素没有chindren键
                        tempCurrentElementParent['children'] = []      // 设上父元素的children键
                    }
                    tempCurrentElementParent['children'].push(currentElement)   // 给父元素加上当前元素作为子元素
                } else {
                    // 不存在父元素，意味着当前元素是一级元素
                    tree.push(currentElement)
                }
            })
            response.data = tree
            resolve(response)
            //////////////////////第一种方法/////////////////////
            // let data = response.data.list
            // let tree = data.filter((father)=>{  //循环所有项
            // //alert(father.id+"--"+father.isDisabled)
            // debugger
            //     let branchArr = data.filter((child)=>{
            //         return father.id === child.pid      //返回每一项的子级数组
            //     });
            //     if(branchArr.length>0){
            //         father.children = branchArr;    //如果存在子级，则给父级添加一个children属性，并赋值
            //     }
            //     //如果是没有子级，说明是末端点，那么判断这个id值是不是包含u，如果包含就可以选择
            //     // if(branchArr.length === 0){
            //     //     return father.pid === 0      //返回第一层
            //     // }//这里的逻辑包含d返回true
            //     // father.isDisabled = true
            // });
            //////////////////////第一种方法/////////////////////
            // let data = response.data.list
            // var tree = [], temp = {}, i = 0, j = 0, len = data.length
            // for(; i < len; i++){
            //     temp[data[i]['id']] = data[i] // 以id作为索引存储元素，可以无需遍历直接定位元素
            // }
            // for(; j < len; j++){
            //     var currentElement = data[j]
            //     var tempCurrentElementParent = temp[currentElement['pid']] // 临时变量里面的当前元素的父元素
            //     if (tempCurrentElementParent) { // 如果存在父元素
            //         if (!tempCurrentElementParent['children']) { // 如果父元素没有chindren键
            //             tempCurrentElementParent['children'] = [] // 设上父元素的children键
            //         }
            //         tempCurrentElementParent['children'].push(currentElement) // 给父元素加上当前元素作为子元素
            //     } else { // 不存在父元素，意味着当前元素是一级元素
            //         tree.push(currentElement);
            //     }
            // }
            // response.data = tree
            // resolve(response)
             //////////////////////第二种方法/////////////////////
        })
    }).catch(error=>{
        reject(error)}
    )
}